BuildRoot
BuildRoot是一個建立LinuxKernel的框架,整個BuildRoot是透過Kconfig和Makefile配置的,和編譯Linux kernel一樣,可以透過menuconfig修改,編譯出一個完整的kernel。
為什麼需要BuildRoot
傳統上我們編譯LinuxKernel時,我們需要先有對應的cross-compiler,並解決相關的相容性問題。同時為了讓我們編譯好的LinuxKernel有例如ld, ls, cd, mkdir等基本指令可以使用,我們通常會使用例如busybox等應用,busybox會幫我們生成基本的linux工具集,有了busybox後我們要產生對應的根目錄,並將之與Linux連結在一起,又或者根據平台的不同可以在開機後Load進來。而在一些更複雜的系統,我們還會需要例如u-boot等BootLoader,而包含busybox, BootLoader也都有各自的相依性要處理,常常讓我們在編譯的時候一個頭兩個大。
而BuildRoot,恰恰就是為了解決上述問題而生,在BuildRoot內我們可以選擇套用別人的defconfig,也可以再透過BuildRoot介面等進行修改,一鍵產生一個完整的LinuxKernel。
BuildRoot下載
https://buildroot.org/download.html
可以直接到官網下載每三個月Release一次的stable-release版本。
BuildRoot檔案結構
以下先羅列出比較會常進去看的資料夾,包含:
BuildRoot使用
下載好BuildRoot後,我們首先要讀取一個defconfig,例如我們可以打
make qemu_riscv64_nommu_virt_defconfig
之後如果要編譯出qemu跑的版本,可以直接下
make
而如果像我們一樣實現了一個與qemu環境不同的平台,則需要再去額外進行設定,包含但不限於
修改完成後再重新下 make,buildroot會自動幫我們下載並根據相依性先後建立好kernel所需的東西,直到把image檔案完成為止。
另外在使用時,如果有更改ISA等spec時,建議將整個資料夾移除後重新安裝,才不會出問題。
碎碎念:今天身體好多了,不過還是先把之後介紹BuildRoot的環節先拉到前面來講,明天再來補實作的部分。